package com.mask.im.sdk.annotation;

import java.lang.annotation.*;

/**
 * Redis消息监听器注解
 * 支持指定节点ID或队列名称
 * @author jian
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RedisMsgListener {
    
    /**
     * 监听的队列名称
     * 默认使用配置的默认队列
     * 如果同时指定了nodeId，则nodeId优先级更高
     */
    String queue() default "";
    
    /**
     * 监听的节点ID
     * 如果指定了nodeId，会自动构建队列名: im:msg:queue:{nodeId}
     * 优先级高于queue参数
     * 例如: "node-a", "node-b", "node-c"
     * 特殊值: "CURRENT_NODE" 表示使用当前节点的ID
     */
    String nodeId() default "";
    
    /**
     * 消息类型过滤
     * 支持多个类型，用逗号分隔
     * 例如: "TEXT,IMAGE" 或 "*" 表示所有类型
     */
    String[] messageTypes() default "*";
    
    /**
     * 批处理大小
     * 默认单条处理
     */
    int batchSize() default 1;
}
